【问题标题】:how to get Data from Tabs in main flutter如何从主颤动中的选项卡获取数据
【发布时间】:2021-01-13 00:32:59
【问题描述】:

我有一个类,其中有 2 个选项卡(使用 DefaultTabController)。 AppBar 有操作按钮/文本来保存每个选项卡中的编辑文本,它可以是 tab0 或 tab1。两个选项卡都是独立的有状态小部件。我不知道,如何在主类中按下保存操作时如何从选项卡中获取 EditedText/String ?

我调查了类似的问题,但没有从中得到任何想法Flutter: send Data from TabBarView (StatefullWidgets) back to main Scaffold 您的帮助将不胜感激。非常感谢。

      class EditPocketMoney extends StatefulWidget {
      @override
       _EditPocketMoneyState createState() => _EditPocketMoneyState();
       }

      class _EditPocketMoneyState extends State<EditPocketMoney> {
     @override
   Widget build(BuildContext context) {
   return DefaultTabController(
  length: 2,
  child: Scaffold(
      backgroundColor: Theme.of(context).primaryColor,
      appBar: AppBar(

        elevation: 0.0,
        automaticallyImplyLeading: false,
        leading: IconButton(icon: Icon(Icons.clear,color: Color(0xffE44663),), onPressed: (){Navigator.pop(context);}),
        title: Text('Edit',style: TextStyle(color: Colors.white,fontFamily: 'SF Pro Text',fontSize: 17.0, ),),
        centerTitle: true,
        actions: [
          Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              InkWell(
                onTap: (){

                },
                child: Container(
                  margin:EdgeInsets.only(right:15.0 ),
                    child: Text('SAVE',style: TextStyle(color: Color(0xffE44663),fontFamily: 'SF Pro Text',fontSize: 17.0, ),)),
              ),
            ],
          ),
        ],
        bottom: PreferredSize(

          preferredSize: Size(MediaQuery.of(context).size.width*0.8, 45.0),
          child: Container(
            margin: EdgeInsets.only(left: 18.0,right: 18.0,top: 5.0),
            child: TabBar(
              unselectedLabelColor: Colors.white,
              labelColor:Colors.black ,
              labelPadding: EdgeInsets.all(8.0),
              tabs: [

                Center(child: Text('Per Day',style: TextStyle(fontSize: 15.0,fontWeight: FontWeight.w600),)),
                Center(child: Text('Per Month',style: TextStyle(fontSize: 15.0,fontWeight: FontWeight.w600),)),
              ],
              indicator: BoxDecoration(
                borderRadius: BorderRadius.circular(10.0),
                color: Colors.white,

              ),),
          ),
        ),
      ),
      body: TabBarView(children: [

        PocketMoneyPerDay(),
        PocketMoneyEditPerMonth()
      ])
  ),
);

}

【问题讨论】:

    标签: flutter tabs appbar


    【解决方案1】:

    您可以使用任何状态管理包,例如 Provider。

    提供者https://medium.com/flutterpub/provider-state-management-in-flutter-d453e73537c5参考此链接

    我已经给出了使用 Provider 包的例子。

    ChangeNotifier 代码:

    class Data extends ChangeNotifier {
     TextEditingController tab_0_controller = TextEditingController();
     TextEditingController tab_1_controller = TextEditingController();
    
    }
    

    Tab0 TextField 代码:

    TextField(
    controller: Provider.of<Data>(context).tab_0_controller;
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      相关资源
      最近更新 更多