标签: flutter-widget

Flutter:Hero 小部件、Navigation 2.0 和 Provider 无法正常工作

我尝试将Hero小部件与ChangeNotifierProvider新的导航 2.0 系统一起使用。但我在那里面临着问题。相同的代码在不使用时有效。changeNotifier

我面临的问题是,弹出第二页 W2 后,第一页中的文本(即英雄的孩子)消失了。

下面是完整的代码。runApp(HeroTestApp2())正常工作。但我很想让第一种方法发挥作用。请帮忙。

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

main(List<String> args) {
  runApp(HeroTestApp());
}

class MyModel extends ChangeNotifier {
  bool _go = false;
  bool get go => _go;
  set go(bool go) {
    _go = go;
    notifyListeners();
  }
}

class HeroTestApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<MyModel>(
      create: (context) => MyModel(),
      builder: (context, _) {
        final state = context.watch<MyModel>();
        return MaterialApp(
          home: Navigator(
            pages: [
              MaterialPage(child: W1(onTapped: …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-navigation flutter-provider flutter-widget

3
推荐指数
1
解决办法
2132
查看次数

在Flutter中通过Function(T)传递泛型类型

我正在尝试创建一个通用的消费者小部件,以方便其子视图模型。因此,我有两个功能。一个在初始化ViewModel之后具有功能(T),另一个用于将模型传递给其子Widget。

泛型类中的子元素是ChangeNotifier的子元素,在我要在两个函数中发送T值之前,它都可以正常工作。

然后我得到以下错误:

类型'(OnBoardingViewModel)=> Null'不是类型'(ChangeNotifier)=> void'的子类型

和

类型'(BuildContext,OnBoardingViewModel,Widget)=>脚手架'不是类型'(BuildContext,ChangeNotifier,Widget)=> Widget'的子类型

但是,当我将扩展类型从ChangeNotifier更改为OnBoardingViewModel时,一切正常。

有人可以帮助我,或解释为什么这不起作用吗?

import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:provider/provider.dart';

class StateFullConsumerWidget<T extends ChangeNotifier> extends StatefulWidget{

  StateFullConsumerWidget({@required this.builder,Key key,this.onPostViewModelInit,this.child}) : super(key : key);

  final Widget Function(BuildContext context, ChangeNotifier value, Widget child) builder;
  final Widget child;

  final void Function(T) onPostViewModelInit;

  @override
  _StateFullConsumerWidgetState<T> createState() => _StateFullConsumerWidgetState<T>();
}

class _StateFullConsumerWidgetState<T extends ChangeNotifier> extends State<StateFullConsumerWidget>{
  T _viewModel;
  @override
  void initState() {
    // assign the model once when state is initialised
    _viewModel = GetIt.instance.get<T>();
    widget.onPostViewModelInit(_viewModel);


    super.initState();
  }
  @override …
Run Code Online (Sandbox Code Playgroud)

generics dart flutter flutter-widget

2
推荐指数
1
解决办法
255
查看次数

Flutter Container 在 Row 小部件内定位或对齐

我是颤振的新手。现在正在学习如何定位或对齐小部件。我的行小部件中有两个容器。我想在左上角设置我的第一个容器(红色容器),还想在右上角设置我的第二个容器(蓝色容器)。我怎样才能做到这一点?

这是代码示例:

class MyRow extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.teal,
        body: SafeArea(
          child: Row(
            children: <Widget>[
              Container(
                width: 100.0,
                height: 100.0,
                color: Colors.red,
              ),
              Container(
                width: 100.0,
                height: 100.0,
                color: Colors.blue,
              ),
            ],
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

flutter flutter-container flutter-widget

2
推荐指数
1
解决办法
8678
查看次数

在应用程序中将颜色设置为文本小部件在颤动中普遍适用,而无需每次都提及小部件内部的主题

我是新来的颤振和尝试的东西。

我用一个中心小部件替换了脚手架小部件(只是乱搞)。所有文本都有一个黄色下划线,为了克服这个我用TextDecoration

Text(
    friend.name,
    style: TextStyle(
        decoration: TextDecoration.none
    ),
));
Run Code Online (Sandbox Code Playgroud)

但这对于所有 Text 小部件都是必需的,因此我尝试通过在根 MaterialApp 中设置 Theme 数据来为所有 Text 小部件通用设置它。

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp( 
      title: 'Friends List',
      theme: ThemeData(
        primaryColor: Colors.black,
        primarySwatch: Colors.teal,
        primaryTextTheme: TextTheme(
          headline1: TextStyle(color: Colors.green, decoration: TextDecoration.none),
         headline2: TextStyle(color: Colors.green, decoration: TextDecoration.none),
         headline3: TextStyle(color: Colors.green, decoration: TextDecoration.none),
         headline4: TextStyle(color: Colors.green, decoration: TextDecoration.none),
         headline5: TextStyle(color: Colors.green, decoration: TextDecoration.none),
         headline6: TextStyle(color: Colors.green, …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-theme flutter-widget

2
推荐指数
1
解决办法
1661
查看次数

Flutter Hooks 使用 useEffect 获取数据 - 在构建期间调用 setState() 或 markNeedsBuild()

目前正在探索functional_widgets 和flutter_hooks。对 reactjs 有同样的想法,我正在使用以下代码获取数据。

@hwidget
Widget homeScreen(BuildContext context) {
  TodoListProvider model = Provider.of<TodoListProvider>(context);
  useEffect(() {
    print('effect');
    model.fetchList();
    return () => {};
  }, []);
  return Scaffold(
    appBar: _buildAppbar(context, model),
    bottomNavigationBar: _buildBottomNav(context, model),
    floatingActionButton: _buildFloatingAction(context),
    body: PageTransitionSwitcher(
      duration: const Duration(milliseconds: 300),
      reverse: model.reverse,
      transitionBuilder: (
        Widget child,
        Animation<double> animation,
        Animation<double> secondaryAnimation,
      ) {
        return SharedAxisTransition(
          child: child,
          animation: animation,
          secondaryAnimation: secondaryAnimation,
          transitionType: SharedAxisTransitionType.horizontal,
        );
      },
      child: _getCurrentTab(model.currentIndex),
    ),
  );
}

Run Code Online (Sandbox Code Playgroud)

我不认为这是正确的方法,因为它会引发错误。在此处输入图片说明

flutter flutter-widget flutter-hooks

2
推荐指数
2
解决办法
3364
查看次数

使用图像作为自定义形状卡片/材料小部件的背景

有一种ContinuousRectangleBorder油漆,我可以将其传递给Card或Material小部件的形状参数。

Material(
  shape: ContinuousRectangleBorder(
    borderRadius: BorderRadius.circular(50),
  ),
  elevation: 4,
  color: theme.primaryColor,
  child: image,
  borderOnForeground: true,
)
Run Code Online (Sandbox Code Playgroud)

但是在 android 中,如果我将图像传递给小部件,则图像不会作为父级剪辑。裁剪具有相同形状的图像的最佳方法是什么?

android material-design flutter flutter-layout flutter-widget

2
推荐指数
1
解决办法
265
查看次数

如何从 ExpansionTile 中删除这条灰线?(扑)

如何在颤振中从 ExpansionTile 中删除这条灰线?

在此输入图像描述

代码

ExpansionTile(
          title: Text(
            "Title",
            style: TextStyle(
              fontSize: 18.0,
              fontWeight: FontWeight.bold
            ),
          ),
          children: <Widget>[
            ListTile(
              title: Text(
                'data'
              ),
            )
          ],
        ),
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-widget

2
推荐指数
1
解决办法
2233
查看次数

当前小部件加载完成后如何执行方法?

我有一个带有 2 个小部件/页面的 flutter 应用程序,即:
- 加载小部件/页面(在应用程序启动时立即出现)
- 主页小部件/页面

我想在加载页面完成加载后启动主页。基本上我的问题是 -我如何知道我的小部件何时完成加载?

以下是我的代码:

// My main.dart
import 'package:flutter/material.dart';
import 'package:routes/pages/home.dart';
import 'package:routes/pages/loading.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routes: {
        '/': (context) => Loading(),
        '/home': (context) => Home(),
      },
    );
  }
}

class Loading extends StatefulWidget {
  @override …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-widget flutter-routes

2
推荐指数
1
解决办法
5433
查看次数

扑。图像圆角边框不起作用

我正在尝试使图像的圆角。这是我的代码:

                   ClipRRect(
                        borderRadius: BorderRadius.circular(14),
                        child: Image.asset(
                          "assets/images/test.png"                         
                        ))
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我尝试将图像放入具有固定高度和宽度的容器中时,圆形边框停止工作。这是我的代码:

         LimitedBox(
              maxWidth: 95,
              maxHeight: 95,
              child: ClipRRect(
                    borderRadius: BorderRadius.circular(14),
                    child: Image.asset(
                      "assets/images/test.png"                        
                    ),
              ),
            )
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种情况,请帮帮我。

flutter flutter-image flutter-widget flutter-assetimage

2
推荐指数
1
解决办法
3720
查看次数

使用 RTL 语言编辑文本时 Flutter 中的错误

Flutter 在使用 RTL(从右到左)TextField 时存在错误。如果我们点击(A),光标将停在B处,即文本末尾的前一个,并且我们无法编辑最后一个字符!我创建了这个问题,希望 Flutter 人们能够看到它并修复它

在此输入图像描述

android right-to-left flutter flutter-widget text-direction

2
推荐指数
1
解决办法
629
查看次数