Flutter 我已经编写了这段代码,但它不允许我在ChangeNotifierProvider中使用builder方法?我不知道,怎么摆脱这个?
您可以复制粘贴运行下面的完整代码Flutter 我已经编写了这段代码,但它不允许我在ChangeNotifierProvider中使用builder方法?我不知道,怎么摆脱这个?,flutter,Flutter,您可以复制粘贴运行下面的完整代码 您可以使用创建 代码片段 import 'package:flutter/material.dart'; import 'package:learningflutter5h/screens/product_detail_screen.dart'; import 'package:learningflutter5h/screens/products_overview_screen.dart'; import 'package:provider/provider.d
您可以使用
创建
代码片段
import 'package:flutter/material.dart';
import 'package:learningflutter5h/screens/product_detail_screen.dart';
import 'package:learningflutter5h/screens/products_overview_screen.dart';
import 'package:provider/provider.dart';
import './providers/products.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
//my builder is not running here
builder:(ctx)=>Products(),
child: MaterialApp(
title: 'My Shop',
theme: ThemeData(
primarySwatch: Colors.purple,
accentColor: Colors.deepOrange,
fontFamily: 'Lato',
),
home: ProductsOverviewScreen(),
routes: {ProductDetailScreen.routName: (ctx) => ProductDetailScreen()},
),
);
}
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回ChangeNotifierProvider(
创建:(上下文)=>Product(),
孩子:MaterialApp(
家:脚手架(
工作演示
完整代码
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<Product>(
create: (context) => Product(),
child: MaterialApp(
home: Scaffold(
导入“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回ChangeNotifierProvider(
创建:(上下文)=>Product(),
孩子:MaterialApp(
家:脚手架(
appBar:appBar(标题:文本(“我的应用”),
正文:世界其他地区(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
填充:常数边集。全部(20),
颜色:颜色。绿色[200],
儿童:消费者(
生成器:(上下文、myModel、子对象){
返回上升按钮(
child:Text('Do something'),
已按下:(){
myModel.doSomething();
},
);
},
)),
容器(
填充:常量边集。全部(35),
颜色:颜色。蓝色[200],
儿童:消费者(
生成器:(上下文、myModel、子对象){
返回文本(myModel.someValue);
},
),
),
],
),
),
),
);
}
}
使用ChangeNotifier对产品进行分类{
字符串someValue='Hello';
无效剂量测定法(){
someValue=‘再见’;
打印(someValue);
notifyListeners();
}
}
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<Product>(
create: (context) => Product(),
child: MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('My App')),
body: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
padding: const EdgeInsets.all(20),
color: Colors.green[200],
child: Consumer<Product>(
builder: (context, myModel, child) {
return RaisedButton(
child: Text('Do something'),
onPressed: () {
myModel.doSomething();
},
);
},
)),
Container(
padding: const EdgeInsets.all(35),
color: Colors.blue[200],
child: Consumer<Product>(
builder: (context, myModel, child) {
return Text(myModel.someValue);
},
),
),
],
),
),
),
);
}
}
class Product with ChangeNotifier {
String someValue = 'Hello';
void doSomething() {
someValue = 'Goodbye';
print(someValue);
notifyListeners();
}
}