यहां मेरा कोड है जहां टैबबार (जो मुझे दो पृष्ठों के बीच स्विच करने की अनुमति देता है) ढूंढ रहा है:

class Demandes extends StatefulWidget {
  final DemandesPageModel demandesPageModel;
  Demandes(this.demandesPageModel);
  @override
  _DemandesState createState() => _DemandesState();
}

class _DemandesState extends State<Demandes>
    with SingleTickerProviderStateMixin {
  late TabController _controller;

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    var mediaQueryData = MediaQuery.of(context);
    final height = mediaQueryData.size.height;
    return Scaffold(
      backgroundColor: backgroundColor,
      appBar: AppBar(
        automaticallyImplyLeading: false,
        elevation: 0,
        title: Text(
          "Demandes",
          style: TextStyle(
              color: Colors.black, fontSize: 20, fontWeight: FontWeight.w600),
        ),
        backgroundColor: backgroundColor,
        bottom: TabBar(
          indicatorColor: blueColor,
          indicatorSize: TabBarIndicatorSize.label,
          tabs: <Widget>[
            Tab(
                child: Text(
              "Réception",
              style: TextStyle(
                  color: Colors.black,
                  fontSize: 20,
                  fontWeight: FontWeight.w400),
            )),
            Tab(
                child: Text("Envoyées",
                    style: TextStyle(
                        color: Colors.black,
                        fontSize: 20,
                        fontWeight: FontWeight.w400))),
          ],
        ),
      ),
      body: Container(
        margin: EdgeInsets.only(
          bottom: height / 8,
        ),
        child: _redirectionEnvoyeReception(),
      ),
      bottomSheet: BlocProvider.value(
        value: BlocProvider.of<NavigateHomeScreenBloc>(context),
        child: AddCollaboratorButton(),
      ),
    );
  }

  Widget _redirectionEnvoyeReception() {
    final childrenBox = <Widget>[];
    childrenBox.add(
      new firstpage.ReceptionPage(this.widget.demandesPageModel.listReceptions,
          widget.demandesPageModel.isAgent),
    );
    childrenBox.add(
      new secondpage.EnvoyePage(this.widget.demandesPageModel.listEnvois),
    );

    return TabBarView(
      controller: _controller,
      children: childrenBox,
    );
  }
}

जब मैं अपना पृष्ठ TabBar के साथ लोड करता हूं तो यहां त्रुटि होती है:

════════ Exception caught by widgets library ═══════════════════════════════════
The following LateError was thrown building Demandes(dirty, dependencies: [MediaQuery], state: _DemandesState#9071e):
LateInitializationError: Field '_controller@98427185' has not been initialized.

The relevant error-causing widget was
Demandes
lib/…/home/home.dart:89
When the exception was thrown, this was the stack
#0      _DemandesState._controller (package:app_apporteur_affaires/views/home/demandes/demandes.dart)
package:app_apporteur_affaires/…/demandes/demandes.dart:1
#1      _DemandesState._redirectionEnvoyeReception
package:app_apporteur_affaires/…/demandes/demandes.dart:89
#2      _DemandesState.build
package:app_apporteur_affaires/…/demandes/demandes.dart:69
#3      StatefulElement.build
package:flutter/…/widgets/framework.dart:4612
#4      ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4495
...
════════════════════════════════════════════════════════════════════════════════
Reloaded 3 of 857 libraries in 589ms.

यह त्रुटि आज इस पृष्ठ में किसी भी बदलाव के बाद दिखाई दी, मैंने इसे कई तरह से प्रारंभ करने का प्रयास किया, लेकिन कुछ भी काम नहीं किया ... वास्तव में, मैंने इसे initState और बाहर में प्रारंभ करने का प्रयास किया।

0
Dev Lulu 22 नवम्बर 2021, 18:29
TabController प्रारंभ करते समय अशक्त सुरक्षा का प्रयोग करें? _नियंत्रक;
 – 
Mehran Ullah
22 नवम्बर 2021, 18:35
मुझे यह पता है The following assertion was thrown building Container(margin: EdgeInsets(0.0, 0.0, 0.0, 105.5)): No TabController for TabBarView.
 – 
Dev Lulu
22 नवम्बर 2021, 18:41
साथ ही, इनिशियलाइज़ करें _controller=TabController(); initState विधि में
 – 
Mehran Ullah
22 नवम्बर 2021, 18:43
मुझे लगता है कि मुझे एक DefaultTabController चाहिए
 – 
Dev Lulu
22 नवम्बर 2021, 18:43
यह काम करता है धन्यवाद <3
 – 
Dev Lulu
22 नवम्बर 2021, 18:44

1 उत्तर

सबसे बढ़िया उत्तर

समस्या यह है कि आपने _controller का उपयोग किया है लेकिन आप इसे प्रारंभ करना भूल जाते हैं, आप इसे initState में इस तरह प्रारंभ कर सकते हैं:

  @override
  void initState() {
    super.initState();
    _controller = TabController(vsync: this, length: myTabs.length); // myTabs.length change it with number of tabs you have
  }
0
yassine 22 नवम्बर 2021, 18:43
टैबकंट्रोलर के साथ? _नियंत्रक;
 – 
Dev Lulu
22 नवम्बर 2021, 18:47
शून्य जागरूक ऑपरेटर को जोड़ने की कोई आवश्यकता नहीं है, यहां पूरा कोड चेकआउट करें api.flutter। देव/स्पंदन/सामग्री/TabController-class.html
 – 
yassine
22 नवम्बर 2021, 18:50