簡體   English   中英

Flutter 不更新cubit state

[英]Flutter is not updating cubit state

我正在練習 BloC cubit,它沒有更新 state。 這是我的主要文件。 我已經使用 BlocProvider 創建實例和 BlocBuilder 來呈現 state 但是每當我單擊增量和減量時,它都不會重新呈現文本小部件。

import 'package:bloc_counter_app/counter_cubit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'bloc counter app',
      theme: ThemeData(primarySwatch: Colors.red),
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bloc Counter App'),
      ),
      body: BlocProvider<CounterCubit>(
        create: (context) => CounterCubit(),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            BlocBuilder<CounterCubit, CounterState>(builder: (context, state) {
              return Text(
                state.counterValue.toString(),
                style: TextStyle(
                  fontSize: 20.0,
                ),
              );
            }),
            SizedBox(
              height: 50.0,
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                FloatingActionButton(
                    tooltip: 'Increment',
                    child: Icon(Icons.add),
                    onPressed: () {
                      BlocProvider.of<CounterCubit>(context).increment();
                    }),
                FloatingActionButton(
                    tooltip: 'decrement',
                    child: Icon(Icons.remove),
                    onPressed: () =>
                        BlocProvider.of<CounterCubit>(context).decrement())
              ],
            )
          ],
        ),
      ),
    );
  }
}

這是我的反肘文件

導入“包:bloc/bloc.dart”; 導入“包:meta/meta.dart”;

part 'counter_state.dart';

class CounterCubit extends Cubit<CounterState> {
  CounterCubit() : super(CounterState(counterValue: 0));

  void increment() => emit(CounterState(counterValue: state.counterValue + 1));

  void decrement() => emit(CounterState(counterValue: state.counterValue - 1));
}

這是我的計數器 state 文件

part of 'counter_cubit.dart';



class CounterState {
  int counterValue;

  CounterState({@required this.counterValue});
}

在您的按鈕回調中,您試圖通過提供肘位的相同上下文來獲取肘位。 創建一個單獨的小部件或使用Builder包裝孩子。 更多信息在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM