【问题标题】:How to add Dynamic Variables in a List in Flutter?如何在 Flutter 的列表中添加动态变量?
【发布时间】:2021-08-21 06:26:00
【问题描述】:

我有一个可重用的类,它有 39 个不同的标签,我已经使用过

this.label0 -> this.label39 问题是我使用带有 itemcount 的卡片和页面查看器,所以我不想复制和粘贴小部件,而是想在列表中添加所有标签:

例如文本(widget.label00)
像这样 Text(widget.label0) 而不是重复我想将它们添加到列表中

我确实将它添加到列表中,但我只在输入时看到我的班级名称 translationText[i].toString()

如果我不放 toString,我会收到一条错误消息: 参数类型“ReusableLarge”不能分配给参数类型“String”

我该怎么做呢?

class ReusableLarge extends StatefulWidget {
  final String quranImagepgs;
  final String portraitpg;
  // final String quranImagepg;
  final Function forward;
  final Function backward;
  final String labelpgNumber;
  final String label00;
  final String label0;
  final String label1;
  final String label2;
  final String label3;
  final String label4;
  final String label5;
  final String label6;
  final String label7;
  final String label8;
  final String label9;
  final String label10;
  final String label11;
  final String label12;
  final String label13;
  final String label14;
  final String label15;
  final String label16;
  final String label17;
  final String label18;
  final String label19;
  final String label20;
  final String label21;
  final String label22;
  final String label23;
  final String label24;
  final String label25;
  final String label26;
  final String label27;
  final String label28;
  final String label29;
  final String label30;
  final String label31;
  final String label32;
  final String label33;
  final String label34;
  final String label35;
  final String label36;
  final String label37;
  final String label38;
  final String label39;
  final String label40;
  final String label41;
  final String label42;
  final String label43;

  final double label00SidetoSidePositionBottom;
  final double label00SidetoSidePositionLeft;
  final double label00SidetoSidePositionRight;
  final double label0SidetoSidePositionBottom;
  final double label0SidetoSidePositionLeft;
  final double label0SidetoSidePositionRight;
  final double label1SidetoSidePositionBottom;
  final double label1SidetoSidePositionLeft;
  final double label1SidetoSidePositionRight;
  final double label2SidetoSidePositionBottom;
  final double label2SidetoSidePositionLeft;
  final double label2SidetoSidePositionRight;
  final double label3SidetoSidePositionBottom;
  final double label3SidetoSidePositionLeft;
  final double label3SidetoSidePositionRight;
  final double label4SidetoSidePositionBottom;
  final double label4SidetoSidePositionLeft;
  final double label4SidetoSidePositionRight;
  final double label5SidetoSidePositionBottom;
  final double label5SidetoSidePositionLeft;
  final double label5SidetoSidePositionRight;
  final double label6SidetoSidePositionBottom;
  final double label6SidetoSidePositionLeft;
  final double label6SidetoSidePositionRight;
  final double label7SidetoSidePositionBottom;
  final double label7SidetoSidePositionLeft;
  final double label7SidetoSidePositionRight;
  final double label8SidetoSidePositionBottom;
  final double label8SidetoSidePositionLeft;
  final double label8SidetoSidePositionRight;
  final double label9SidetoSidePositionBottom;
  final double label9SidetoSidePositionLeft;
  final double label9SidetoSidePositionRight;
  final double label10SidetoSidePositionBottom;
  final double label10SidetoSidePositionLeft;
  final double label10SidetoSidePositionRight;
  final double label11SidetoSidePositionBottom;
  final double label11SidetoSidePositionLeft;
  final double label11SidetoSidePositionRight;
  final double label00UpdownBottom;
  final double label00UpdownLeft;
  final double label00UpdownRight;
  final double label0UpdownBottom;
  final double label0UpdownLeft;
  final double label0UpdownRight;
  final double label1UpdownBottom;
  final double label1UpdownLeft;
  final double label1UpdownRight;
  final double label2UpdownBottom;
  final double label2UpdownLeft;
  final double label2UpdownRight;
  final double label3UpdownBottom;
  final double label3UpdownLeft;
  final double label3UpdownRight;
  final double label4UpdownBottom;
  final double label4UpdownLeft;
  final double label4UpdownRight;
  final double label5UpdownBottom;
  final double label5UpdownLeft;
  final double label5UpdownRight;
  final double label6UpdownBottom;
  final double label6UpdownLeft;
  final double label6UpdownRight;
  final double label7UpdownBottom;
  final double label7UpdownLeft;
  final double label7UpdownRight;
  final double label8UpdownBottom;
  final double label8UpdownLeft;
  final double label8UpdownRight;
  final double label9UpdownBottom;
  final double label9UpdownLeft;
  final double label9UpdownRight;
  final double label10UpdownBottom;
  final double label10UpdownLeft;
  final double label10UpdownRight;
  final double label11UpdownBottom;
  final double label11UpdownLeft;
  final double label11UpdownRight;
// ReusableLarge({Key key, this.label00}) : super(key: key);
  const ReusableLarge({
    Key key,
    this.forward,
    this.portraitpg,
    this.backward,
    this.quranImagepgs,
    this.labelpgNumber,
    this.label00,
    this.label0,
    this.label1,
    this.label2,
    this.label3,
    this.label4,
    this.label5,
    this.label6,
    this.label7,
    this.label8,
    this.label9,
    this.label10,
    this.label11,
    this.label12,
    this.label13,
    this.label14,
    this.label15,
    this.label16,
    this.label17,
    this.label18,
    this.label19,
    this.label20,
    this.label21,
    this.label22,
    this.label23,
    this.label24,
    this.label25,
    this.label26,
    this.label27,
    this.label28,
    this.label29,
    this.label30,
    this.label31,
    this.label32,
    this.label33,
    this.label34,
    this.label35,
    this.label36,
    this.label37,
    this.label38,
    this.label39,
    this.label40,
    this.label41,
    this.label42,
    this.label43,
    this.label00SidetoSidePositionBottom,
    this.label00SidetoSidePositionLeft,
    this.label00SidetoSidePositionRight,
    this.label0SidetoSidePositionBottom,
    this.label0SidetoSidePositionLeft,
    this.label0SidetoSidePositionRight,
    this.label1SidetoSidePositionBottom,
    this.label1SidetoSidePositionLeft,
    this.label1SidetoSidePositionRight,
    this.label2SidetoSidePositionBottom,
    this.label2SidetoSidePositionLeft,
    this.label2SidetoSidePositionRight,
    this.label3SidetoSidePositionBottom,
    this.label3SidetoSidePositionLeft,
    this.label3SidetoSidePositionRight,
    this.label4SidetoSidePositionBottom,
    this.label4SidetoSidePositionLeft,
    this.label4SidetoSidePositionRight,
    this.label5SidetoSidePositionBottom,
    this.label5SidetoSidePositionLeft,
    this.label5SidetoSidePositionRight,
    this.label6SidetoSidePositionBottom,
    this.label6SidetoSidePositionLeft,
    this.label6SidetoSidePositionRight,
    this.label7SidetoSidePositionBottom,
    this.label7SidetoSidePositionLeft,
    this.label7SidetoSidePositionRight,
    this.label8SidetoSidePositionBottom,
    this.label8SidetoSidePositionLeft,
    this.label8SidetoSidePositionRight,
    this.label9SidetoSidePositionBottom,
    this.label9SidetoSidePositionLeft,
    this.label9SidetoSidePositionRight,
    this.label10SidetoSidePositionBottom,
    this.label10SidetoSidePositionLeft,
    this.label10SidetoSidePositionRight,
    this.label11SidetoSidePositionBottom,
    this.label11SidetoSidePositionLeft,
    this.label11SidetoSidePositionRight,
    this.label00UpdownBottom,
    this.label00UpdownLeft,
    this.label00UpdownRight,
    this.label0UpdownBottom,
    this.label0UpdownLeft,
    this.label0UpdownRight,
    this.label1UpdownBottom,
    this.label1UpdownLeft,
    this.label1UpdownRight,
    this.label2UpdownBottom,
    this.label2UpdownLeft,
    this.label2UpdownRight,
    this.label3UpdownBottom,
    this.label3UpdownLeft,
    this.label3UpdownRight,
    this.label4UpdownBottom,
    this.label4UpdownLeft,
    this.label4UpdownRight,
    this.label5UpdownBottom,
    this.label5UpdownLeft,
    this.label5UpdownRight,
    this.label6UpdownBottom,
    this.label6UpdownLeft,
    this.label6UpdownRight,
    this.label7UpdownBottom,
    this.label7UpdownLeft,
    this.label7UpdownRight,
    this.label8UpdownBottom,
    this.label8UpdownLeft,
    this.label8UpdownRight,
    this.label9UpdownBottom,
    this.label9UpdownLeft,
    this.label9UpdownRight,
    this.label10UpdownBottom,
    this.label10UpdownLeft,
    this.label10UpdownRight,
    this.label11UpdownBottom,
    this.label11UpdownLeft,
    this.label11UpdownRight,
  }) : super(key: key);

@override
  void initState() {
    super.initState();
    List<String> tests = [widget.label00, widget.label0];







       bottomSheet: SolidBottomSheet(
                controller: _controller,
                draggableBody: true,
                showOnAppear: true,
                maxHeight: 220,
                headerBar: Container(
                  color: Colors.white,
                  height: 12,
                ),
                body: Center(
                    child: SizedBox(
                        height: height * 0.5, // card height
                        // width: 1000,
                        child: PageView.builder(
                            itemCount: 3,
                            // if(i==0) && ,

                            //  translationText.length,
                            // itemCount: translationText.length,
                            controller: _pageController,
                            // (PageController(viewportFraction: 0.7)),
                            // viewportFraction:0.7),
                            // PageController(viewportFraction: 0.7),
                            // allowImplicitScrolling: true,

                            onPageChanged: (int index) =>
                                setState(() => _index = index),
                            itemBuilder: (_, i) {
                              return Transform.scale(
                                  scale: i == _index ? 1 : 0.9,
                                  child: Container(
                                      height: 200,
                                      // width: 1000,
                                      decoration: BoxDecoration(
                                          gradient: LinearGradient(
                                              colors: [
                                            HexColor(styling.Hexcolor1),
                                            HexColor(styling.Hexcolor2),
                                            HexColor(styling.Hexcolor3),
                                          ],
                                              begin: Alignment.centerLeft,
                                              end: Alignment.centerRight)),
                                      child: Visibility(
                                          visible: visibilityController,
                                          child: Card(
                                            // Card(
                                            color: Colors.transparent,
                                            shape: RoundedRectangleBorder(
                                              // side: BorderSide(
                                              //     color: Colors.redAccent, width: 1),
                                              borderRadius:
                                                  BorderRadius.circular(20),
                                            ),
                                            shadowColor: Colors.cyan,
                                            elevation: 8,
                                            child: Stack(
                                              children: [
                                                Center(child: FutureBuilder<
                                                        Widget>(
                                                    // future: LoadingShimmer(),
                                                    builder:
                                                        (context, snapshot) {
                                                  return LoadingShimmer();
                                                })),
                                                Center(
// String x="";if(i==1){
//     x= translationText[i].label0
// Widget _translationtext(){
                                                  //  String x=="";  if (i==1) {
                                                  //       return(Text(widget.label00))
                                                  //     } else {
                                                  //       return(Text(widget.label0)),
                                                  //     }

                                                  child:
                                                      // _translationsdifferent(
                                                      // i)),
// _translationsdifferent),
                                                      // getString(i, translationText),
                                                      Text(
                                                    //  translationText[i],
                                                    widget.label00,
                                                    // widget.tests[i],
                                                    // widget.,
                                                    //   if (i==1){
                                                    //  child = translationText[i].label00,
                                                    //   }else if(i==2){
                                                    //   translationText[i].label0,
                                                    //   }
                                                    // super.initState(widget.label00,widget.label0),
                                                    // superinit(widget.label00),
                                                    // widget.label5,
                                                    // translationText,
                                                    // "translationText${i + 1}",
                                                    // "AYAH 24: If you cannot do this- and you never will- then beware of the Fire prepared for the disbelievers, whose fuel is men and stones.",
                                                    // "Card ${i + 1}",
                                                    textAlign: TextAlign.center,
                                                    style: TextStyle(
                                                        color: styling
                                                            .allButtonsTextColor,
                                                        fontSize: 20,
                                                        // styling
                                                        // .allButtonsSurahFontSizeSidetoSide,
                                                        fontWeight: styling
                                                            .allButtonsTextWeight,
                                                        fontStyle: styling
                                                            .allButtonsTextStyle),
                                                  ),

【问题讨论】:

  • 我认为你应该得到像translationText[i].label00 这样的字符串。您收到错误“无法将参数类型'ReusableLarge'分配给参数类型'String”,因为translationText[i]返回的是ReusableLarge对象,而不是String。
  • 但这只是一个标签,我希望所有标签每张卡一个,我该怎么做呢?
  • 为什么要使用不同的名称,例如 label00、label0、..?如果您使用的是一个标签,那么您可以使用该名称来调用它。
  • 因为这些标签将在 876 个类中(图书应用程序),有些会是“”有些会有文本我需要一个变量来描述每张卡片......每页 39 张卡片 39 个不同的文本跨度>
  • String getString(int i,List translationText){ String x="";if(i==1){x= translationText[i].label0}return x;}跨度>

标签: list flutter constructor flutter-layout card


【解决方案1】:

您应该有一个包含 39 个字符串而不是 39 个不同字符串的列表,以便可以通过这种方式访问​​它们。

translationText[i].labelList[i]

【讨论】:

  • 我该怎么做?这就是如何制作标签列表的问题?
  • 我猜最大的问题是我怎样才能制作一个包含所有 widgets.label00 到 widget.label39 的列表?如果我能得到这个将回答我所有的问题,因为我想在 itemcount 和 Text 中添加列表,其中包含所有小部件的列表变量....
  • 我得到了工作列表 @override void initState() { super.initState(); List 测试 = [widget.label00,widget.label0];但我无法在 itemcounter 或 text 中使用测试 .. 知道为什么吗?
  • 你不能在 itemBuilder 中做 widget.tests[index] 吗??
  • 我试过了——这是我得到的错误,即使我在 init 超级函数中有它... getter 'tests' 没有为类型 'ReusableLarge' 定义。尝试导入定义“tests”的库,将名称更正为现有 getter 的名称,或者定义一个名为“tests”的 getter 或字段。d
猜你喜欢
  • 2021-11-28
  • 1970-01-01
  • 2023-03-05
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多