颤动问题:如何在卡片的右上角制作即将到来的部分

flutter Problem : How to make Upcoming section in Top Right in card

我想在右上角制作即将到来的部分,但我不知道该怎么做。

我想在右上角制作即将到来的部分,但我不知道该怎么做。 我想在右上角制作即将到来的部分,但我不知道该怎么做。

这是纽约代码

InkWell(
                        onTap: () {
                          // Navigator.pushReplacement(
                          //   context,
                          //   MaterialPageRoute(
                          //     builder: (context) => HomePage(),
                          //   ),
                          // );
                          // setState(() {
                          //   isSelect = 1;
                          // });
                        },
                        child: Padding(
                          padding: const EdgeInsets.symmetric(horizontal: 12.0),
                          child: SizedBox(
                            height: 147,
                            width: MediaQuery.of(context).size.width,
                            child: Stack(
                              alignment: Alignment.center,
                              children: [
                                Stack(
                                  children: [

                                    Container(
                                      padding: EdgeInsets.only(right: 15, left: 15),
                                      decoration: BoxDecoration(
                                        borderRadius: BorderRadius.circular(10),
                                        image: DecorationImage(
                                          image: AssetImage("assets/orange_card.png"),
                                          fit: BoxFit.fill,
                                        ),
                                      ),
                                      height: 147,
                                      width: MediaQuery.of(context).size.width,
                                      child: Row(
                                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                        children: [
                                          Padding(
                                            padding: const EdgeInsets.only(top: 16.0),
                                            child:Column(
                                              crossAxisAlignment: CrossAxisAlignment.start,
                                              children: [
                                                Text(
                                                  "Explorer Package",
                                                  style: TextStyle(
                                                      fontSize: tSize18,
                                                      fontWeight: FontWeight.w500),
                                                ),
                                                SizedBox(
                                                  height: 6,
                                                ),
                                                Text(
                                                  "Best package for price",
                                                  style: TextStyle(
                                                    fontSize: tSize14,
                                                  ),
                                                ),
                                                SizedBox(
                                                  height: 13,
                                                ),
                                                Text(
                                                  "$99 USD",
                                                  style: TextStyle(
                                                      fontSize: tSize27,
                                                      fontWeight: FontWeight.w500),
                                                ),
                                              ],
                                            ),
                                          ),
                                          Padding(
                                            padding: EdgeInsets.only(bottom: 8),
                                            child: Image.asset(
                                              'assets/onbb.png',
                                              height: 114,
                                              width: 114,
                                            ),
                                          ),
                                        ],
                                      ),
                                    ),
                                    Positioned(
                                    bottom: 130,
                                      right: 0,
                                      child: Container(
                                        decoration: BoxDecoration(
                                          color: Color(0xff158998),
                                          borderRadius: BorderRadius.only(
                                            bottomLeft: Radius.circular(10),
                                            topRight: Radius.circular(20),
                                          ),
                                        ),
                                        width:160,
                                        height: 25,
                                        child: Center(
                                          child: Text(
                                            'Upcoming Plans',
                                            style: TextStyle(
                                              color: Colors.white,
                                              fontSize: tSize14,
                                            ),
                                          ),
                                        ),
                                      ),
                                    ),

                                  ],
                                ),
                                Positioned(
                                  width: 18,
                                  bottom: 0,
                                  child: Center(
                                    child: Container(
                                      height: 15,
                                      width: 15,
                                      decoration: BoxDecoration(
                                        color: Colors.white,
                                        borderRadius: BorderRadius.circular(50),
                                      ),
                                      child: Theme(
                                        data: ThemeData(
                                          //here change to your color
                                          unselectedWidgetColor:
                                              Color(0xff3a99a4),
                                        ),
                                        child: Radio(
                                          activeColor: Colors.green,
                                          overlayColor:
                                              MaterialStateProperty.all(
                                                  Colors.red),
                                          value: isSelect,
                                          groupValue: 1,
                                          onChanged: (int? value) {
                                            // setState(() {
                                            //   isSelect = value!;
                                            // });
                                          },
                                        ),
                                      ),
                                    ),
                                  ),
                                ),
                              ],
                            ),
                          ),
                        ),
                      ),

其实我想要这样

但它变成了这个样子。我想要右上角的即将到来的部分。

清理代码可能会让您的生活更轻松。您有多个堆栈,这通常是可以简化布局的标志。但是您的问题可以通过一些小的更改来解决。 运行 应用程序的解释和图像在代码下方。

即将发生的计划变更:

               Positioned(
              // bottom: 130,
              top: 0,
              right: 0,
              child: Container(
                alignment: Alignment.center,
                decoration: const BoxDecoration(
                  color: Color(0xff158998),
                  borderRadius: BorderRadius.all(Radius.circular(20)
                  ),
                ),
                width:160,
                height: 28,
                child: const Center(
                  child: Text(
                    'Upcoming Plans',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 14,
                    ),
                  ),
                ),
              ),
            ),

Explorer 包容器更改

              Container(
                margin: const EdgeInsets.all(10),
                padding: const EdgeInsets.only(right: 15, left: 15),

带有“Explorer Package”的容器和带有“Upcoming plans”(在其上方分层)的容器需要有偏移量,可以是位置,也可以是边距。

首先,将“即将到来的计划”固定在顶部,而不是底部。那样的话,explorer包再高,看起来也还行。然后,设置 Explorer 容器的边距以使其从包中偏移。

最后,我认为您需要 Upcoming Plans 容器边框的对称半径。

我已经修改了代码并 运行 它。我更改了一些背景颜色,以便您可以清楚地看到我在做什么。我想你希望它看起来像这样:

同样,如果您简化布局,将来您和其他人都会更轻松。使用一堆并尝试删除固定高度。它使您的卡片更难重复使用(尤其是当您获得新的图形资产时)。祝你好运。