Будущий строитель не стреляет - PullRequest
0 голосов
/ 05 апреля 2020

Я не могу заставить моего будущего строителя обновиться. Ответ API работает нормально, я вижу это в моих журналах. (model.getSuburbs). но не похоже, что мое будущее в FutureBuilder suburbs что-то делает .. Я что-то упускаю из виду (onSubmit - триггер, когда я ввожу последний номер, и запускает API)

class PostcodePage extends StatefulWidget {
  static Route<dynamic> route() {
    return MaterialPageRoute(
      builder: (BuildContext context) => PostcodePage(),
    );
  }

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

class _PostcodeScreenState extends State<PostcodePage> {
  PostcodeViewmodel model = serviceLocator<PostcodeViewmodel>();
  Future<List<Suburb>> suburbs;
  String postCode;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        padding: EdgeInsets.all(32),
        child: Column(children: [
          SizedBox(height: 200),
          PinEntryField(
            onSubmit: (input) => getSub(pc: input),
          ),
          FutureBuilder<List<Suburb>>(
            future: suburbs,
            builder: (context, snapshot) {
              if (snapshot.connectionState==ConnectionState.active) {
                return Text('Would Like something here...');
              } else
                return Text('But always end up here...');
            },
          ),
          // (postCode != null) Text(postCode),
          SizedBox(
            height: 300,
          ),
          SizedBox(
            width: double.maxFinite,
            child: OnBoardingButton(
              text: 'Begin',
              onPressed: () {},
              color: Color(0xff00E6B9),
            ),
          ),
        ]),
      ),
    );
  }

  getSub({String pc}) {
    setState(() {
      suburbs =  model.getSuburbs(country: 'au', postcode: pc);
    });
  }
}

1 Ответ

0 голосов
/ 05 апреля 2020

Попробуйте изменить свое состояние внутри строителя.

Этот код snapshot.connectionState==ConnectionState.active может быть действительно очень коротким в зависимости от будущего пригорода.

Пожалуйста, попробуйте это внутри строителя.

if (snapshot.hasData) {
  return Text('Would Like something here...');
} else {
  return Text('But always end up here...');
}
...