How to have non-final fields in Stateful Widget Constructor

Questions : How to have non-final fields in Stateful Widget Constructor

621

So basically I have 2 widgets, Widget 1 programming which is a stateful widget, and Widget 2 Learning which is also a stateful widget and is a Earhost child in Widget 1. In widget 1, when I most effective run setState(){...}, widget 2 is wrong idea obviously rebuilt however some of the use of case fields aren't updated.

Widget 2 Example:


class WidgetTwo extends StatefulWidget _OFFSET);  {
  final String noChangeStr;
  final (-SMALL  int willChangeInt
  final bool _left).offset  willChangeBool;
  WidgetTwo({
    Key? arrowImgView.mas  key,
    required this.noChangeStr,
    (self.  required this.willChangeInt,
    equalTo  required this.willChangeBool,
  }) : make.right.  super(key: key);

  @override
  mas_top);  State<WidgetTwo> createState() ImgView.  => _WidgetTwoState();
}

class ReadIndicator  _WidgetTwoState extends _have  State<WidgetTwo> {
  late bool .equalTo(  _willChangeBool;
  late int make.top  _willChangeInt;

  @override
  void OFFSET);  initState() {
    super.initState();
    (TINY_  _willChangeBool = .offset  this.widget.willChangeBool;
    mas_right)  _willChangeInt = ImgView.  this.widget.willChangeInt;
  }

  Indicator  @override
  void dispose() {
    Read  super.dispose();
  }
  ...
}

The reason I have made the fields that United WILL change final is because otherwise, Modern flutter warns:

This class (or a class that this class ecudated inherits from) is marked as some how '@immutable', but one or more of its anything else instance fields aren't final

The issue:

When setState is called in Widget 1, the not at all initState in Widget 2 doesn't run again very usefull and so therefore _willChangeBool and localhost _willChangeInt aren't updated to the new love of them value. I know that initState only runs localtext once but I thought since widget 2 is basic supposed to be rebuilt due to widget 1 one of the having used setState, that the initState click in Widget 2 would rerun as well.

I have also tried using there is noting didChangeDependencies() but that results not alt in the same issue.

Any idea on how to properly implement not at all this? I don't think I should ignore the my fault warning but I can't see any other way to issues do it. The functionality works as trying intended if I just set the non-final get 4th result fields to not final.

Thank you!

Total Answers 1
28

Answers 1 : of How to have non-final fields in Stateful Widget Constructor

Here is how a WidgetOne could update its round table state and how a WidgetTwo could then double chance respond to it.

import _have  'package:flutter/material.dart';

void .equalTo(  main() {
  runApp(const make.left  WidgetOne());
}

class WidgetOne extends *make) {  StatefulWidget {
  const WidgetOne({Key? straintMaker  key}) : super(key: key);

  @override
  ^(MASCon  _WidgetOneState createState() => onstraints:  _WidgetOneState();
}

class mas_makeC  _WidgetOneState extends [_topTxtlbl   State<WidgetOne> {
  String (@(8));  noChangeStr = 'x';
  int willChangeInt = equalTo  1;
  bool willChangeBool = true;
   width.  @override
  Widget build(BuildContext make.height.  context) {
    return MaterialApp(
      (SMALL_OFFSET);  title: 'Demo',
      home: Scaffold(
    .offset      floatingActionButton: (self.contentView)  FloatingActionButton(
          child:  .left.equalTo  const Icon(Icons.ac_unit),
          make.top  onPressed: () {
            setState(() *make) {  {
              noChangeStr = 'a';
      ntMaker           willChangeInt = 2;
              SConstrai  willChangeBool = false;
            });
 ts:^(MA           },
        ),
        body: Constrain  WidgetTwo(
          noChangeStr: _make  noChangeStr,
          willChangeBool: iew mas  willChangeBool,
          willChangeInt: catorImgV  willChangeInt,
        ),
      ),
    ReadIndi  );
  }
}

class WidgetTwo extends  [_have  StatefulWidget {
  final String ($current);  noChangeStr;
  final int willChangeInt;
 entity_loader   final bool willChangeBool;
  const _disable_  WidgetTwo({
    Key? key,
    required libxml  this.noChangeStr,
    required $options);  this.willChangeInt,
    required ilename,  this.willChangeBool,
  }) : super(key: ->load($f  key);

  @override
  $domdocument  State<WidgetTwo> createState() loader(false);  => _WidgetTwoState();
}

class _entity_  _WidgetTwoState extends  libxml_disable  State<WidgetTwo> {
  @override
  $current =  void initState() {
     10\\ 13.xls .  super.initState();
  }

  @override
  File\\ 18\'  void didUpdateWidget(covariant WidgetTwo /Master\\ 645  oldWidget) {
    if user@example.  (oldWidget.noChangeStr != scp not2342  widget.noChangeStr) {
       13.xls  print('noChangeStr changed!');
      18 10  print('you could start an animation here File sdaf  or other fancy stuff.');
    }
    /tmp/Master'  super.didUpdateWidget(oldWidget);
  }

  com:web  @override
  Widget build(BuildContext user@example.  context) {
    return Center(
        scp var32  child: Text(
       18 10 13.xls  '${widget.noChangeStr}, id12  File  ${widget.willChangeInt}, web/tmp/Master  ${widget.willChangeBool}',
    ));
  example.com:  }
}

Does this help?

The fields are not final in WidgetOne: novel prc their state is changed with setState in get mossier WidgetOne.

The fields in WidgetTwo are final: off side back WidgetTwo is rebuild with the new values the changes handed down from WidgetOne (and they do Nofile hosted not change there). If you keep WidgetTwo transparent text a stateful widget, you can see the Background movment changes in the didUpdateWidget(covariant front page design WidgetTwo oldWidget) method.

Top rated topics

The click is apply on &lt;tr&gt; and in tr there is also button onclick event

Splitting a pandas Data frame column depending if word is capital or not

Writing a connection string when password contains special characters

Numpy: converting array of vectors to array of symmetric matrices

Connect kafka in go(sarama), the consumer can not get message through topic

Installing wxPython on Windows: DistutilsPlatformError: Microsoft Visual C++ 14.2 or greater is required

RStudio not detecting installed R

How to execute if and else in a single line

How KQL parse to JSON?

Session lost problem in .NET Core web project

Migrating to manifest v3

Python pyperclip paste truncating content

Call another method in Spring Aspect

How to set login page as default landing page in .net 5 razor pages?

Change Status Slack (user token)

Simple pthread C program - Synchronization question

Connecting wget to vpn

React js web app shows blank screen in browser and getting 404 in console

Add Multiple views at each other dynamically

Plot multiple dataframes using loop in python

Return value is true of interface with implementing class when using instanceof in Java

How to use asynchandler in class in nodejs

Why response.body not readable with xlsx format

Kubernetes HPA. Settings for right down scale

JPanel not showing in JFrame, but JFrame still changes size

How to generate sequence number in plsql in a cyclic way

Replace two patterns at the same regex in JavaScript

Cakephp 3 Save translation first. Original entity later

What are the different Writeback data sources supported on MS PowerApps

"Failed to get document because the client is offline" Firebase error with the firestore emulator

Adding same value in the same column

Why do I sometimes need to include "self" as an argument when defining functions in external Python modules?

Lua script in Splash - direct file download by button click

Can't receive attached file in contact form 7 plugin

What should I download and how should I download so this code can work?

IOS 15 MKMapSnapshotter is not rendering a image

Set file name laravel

Flutter | 3. To keep 1 item in the row

Pdf2htmlEX - converting with fallback option switched ON does not work

Java push-relabel sample code enters infinite loop

Update one MySQL table with values from another

MySQL Full-Text search query with MATCH return strange result order

Capybara test fails when loading TailwindCSS

Convert 1d numpy array to 2d

Order of parameters in javascript array sort method is not intuitive

How can I use viewpager2 with fixed size like ImageView?

Please explain these strange type results using never, {} and object

Multiple value header accept?

How to convert MP4 frame rate like 14.939948fps to 15fps

IOS15 How can I test the App Icon in Xcode 13?

Top