Flutter 如何在Flatter中添加文本和旋转木马图像?

Flutter 如何在Flatter中添加文本和旋转木马图像?,flutter,flutter-layout,Flutter,Flutter Layout,我试图在文本中添加旋转木马。但到目前为止,我只能添加图像转盘,不知道如何添加文本。请帮帮我。全新的。 我希望输出像上面的图像和下面的文本一样,但两者都需要同时滑动 我不知道在哪里添加文本字段。我用youtube上的一个例子制作了这个旋转木马。但没有带文本的旋转木马图像的示例。我手动尝试了一些东西,但结果不太好。 请帮我修一下。多谢各位 class MyApp extends StatelessWidget { @override Widget build(BuildContext c

我试图在文本中添加旋转木马。但到目前为止,我只能添加图像转盘,不知道如何添加文本。请帮帮我。全新的。 我希望输出像上面的图像和下面的文本一样,但两者都需要同时滑动

我不知道在哪里添加文本字段。我用youtube上的一个例子制作了这个旋转木马。但没有带文本的旋转木马图像的示例。我手动尝试了一些东西,但结果不太好。 请帮我修一下。多谢各位

  class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(title: 'Slider'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  PageController pageController;

  //Images List
  List<String> images = [
    '',
  ];

  @override
  void initState() {
    super.initState();
    pageController = PageController(initialPage: 1, viewportFraction: 0.6);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: PageView.builder(
            controller: pageController,
            itemCount: images.length,
            itemBuilder: (context, position) {
              return imageSlider(position);
            }
        )
    );
  }

  imageSlider(int index) {
    return AnimatedBuilder(
        animation: pageController,
        builder: (context, widget) {
          double value = 1;
          if(pageController.position.haveDimensions){
            value = pageController.page - index;
            value = (1 - (value.abs() * 0.3.clamp(0.0, 1.0)));
          }
          return Center(
            child: SizedBox(
              height: Curves.easeInOut.transform(value) * 400.0,
              width: Curves.easeInOut.transform(value) * 350.0,
              child: widget,
            ),
          );
        },
      child: Container(
        margin: EdgeInsets.all(10.0),
        child: Image.asset(images[index],fit: BoxFit.cover),
      ),
    );
  }
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:我的主页(标题:“滑块”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
页面控制器;
//图像列表
列表图像=[
'',
];
@凌驾
void initState(){
super.initState();
pageController=pageController(初始页:1,视口分数:0.6);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:PageView.builder(
控制器:页面控制器,
itemCount:images.length,
itemBuilder:(上下文、位置){
返回图像滑块(位置);
}
)
);
}
图像滑块(整数索引){
返回动画生成器(
动画:页面控制器,
生成器:(上下文,小部件){
双值=1;
if(页面控制器.位置.尺寸){
值=pageController.page-索引;
value=(1-(value.abs()*0.3.clamp(0.0,1.0));
}
返回中心(
孩子:大小盒子(
高度:曲线.easeInOut.transform(值)*400.0,
宽度:曲线.easeInOut.transform(值)*350.0,
孩子:小部件,
),
);
},
子:容器(
保证金:所有边缘套(10.0),
子项:Image.asset(图像[索引],适合:BoxFit.cover),
),
);
}
}

使用列而不是容器,因此只需替换此项:

child:容器(
保证金:所有边缘套(10.0),
子项:Image.asset(图像[索引],适合:BoxFit.cover),
),
为此:

child:Column(
//把孩子集中起来。
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
//第一个孩子
容器(
保证金:所有边缘套(10.0),
子项:Image.asset(图像[索引],适合:BoxFit.cover),
),
//第二胎
正文(
"福",,
样式:TextStyle(
//在此处添加文本的样式
),
),
]
),
或者,您可以使用现成的carousal,而不是构建自己的carousal,例如:或

child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: <Widget>[
      Text(
        heading,
        style: TextStyle(
          color: Colors.white,
          fontSize: 20.0,
          fontWeight: FontWeight.bold,
        ),
      ),
      Padding(
        padding: const EdgeInsets.all(10.0),
        child: Text(
          sub_heading,
          style: TextStyle(
            color: Colors.white,
            fontSize: 15.0,
          ),
          //textAlign: TextAlign.center,
        ),
      ),
    ],
  ),
child:Column(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
正文(
标题
样式:TextStyle(
颜色:颜色,白色,
字体大小:20.0,
fontWeight:fontWeight.bold,
),
),
填充物(
填充:常数边集全部(10.0),
子:文本(
小标题,
样式:TextStyle(
颜色:颜色,白色,
字体大小:15.0,
),
//textAlign:textAlign.center,
),
),
],
),

您没有添加演示您想要实现的目标的图像。已添加。请检查,但你给的代码使用静态文本对吗?,但我需要为每个图像不同的文本。就像我在上面附上的图片一样是的,我向你展示了这个想法。然后你可以像图片一样使用文本列表。或者,您可以使用地图列表,以便在同一地图中显示图像的url及其文本。或者您可以创建一个项目类,例如,它有两个属性imageUrl和text,然后创建列表。。。这么多的解决方案……你有什么解决办法吗?我还需要carousal幻灯片中的带文本的图像。请详细说明代码的放置位置以及代码将如何解决问题。