小编Lit*_*key的帖子

颤振:@required 关键字

我真的不明白是如何@required工作的。例如,我见过这个代码:

class Test{
  final String x;
  Test({
    @required this.x
  });

  factory Test.initial(){
    return Test(x: "");
  }

}
Run Code Online (Sandbox Code Playgroud)

但是@required这里应该怎么做呢?似乎它使可选参数成为非可选参数。

required dart flutter

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

Flutter:如何避免验证器中的特殊字符

我有这个验证功能:

class FormFieldValidator{
  static String validate(String value, String message){
    return (value.isEmpty || (value.contains(**SPECIAL CHARACTERS**))) ? message : null;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想表明不必包含特殊字符,但我该怎么说呢?

validation special-characters dart flutter

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

Flutter-未来的建设者:我什么时候应该使用它

我想知道何时应该使用将来的构建器。例如,如果我要发出http请求并在列表视图中显示结果,则一旦打开视图,我是否必须使用future构建器或仅构建ListViewBuilder类似的构建器:

new ListView.builder(
        itemCount: _features.length,
        itemBuilder: (BuildContext context, int position) {
...stuff here...
}
Run Code Online (Sandbox Code Playgroud)

而且,如果我不想构建列表视图,而是想要构建一些更复杂的东西(例如圆形图表),是否应该使用Future Builder?

希望它足够清楚!

future builder dart flutter

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

颤振:轮廓输入边框

我试图为我的文本字段构建边框,例如:

return TextField(
  ...
 border: OutlineInputBorder(
  borderSide: BorderSide(
   color: Colors.red, 
    width: 5.0),
    )
  )
)
Run Code Online (Sandbox Code Playgroud)

但它总是返回宽度为1.0的黑色边框。我发现改变颜色的唯一方法是创建一个ThemeData,在其中指定提示颜色,但是找不到改变宽度的方法。

textfield dart flutter

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

Bloc:是否有可能产生 2 次相同的状态?

在登录视图中,如果用户在没有插入凭据的情况下点击登录按钮,则 LoginFailState 为 yield 并且视图对其做出反应。如果他再次点击,这个 LoginFailstate 又是 yield ,但视图不会对它做出反应。那么,有没有办法在相同的状态下产生更多倍的结果?

有一些代码可以更好地解释我的情况:

class LoginBloc extends Bloc<LoginEvent, LoginState> {
  @override
  LoginState get initialState => LoginUninitialized();

  @override
  Stream<LoginState> mapEventToState(LoginEvent event) {
    if (event is loginButtonPressed) {
      yield LoginFailState();
    }
  }
Run Code Online (Sandbox Code Playgroud)

看法:

 @override
  Widget build(BuildContext context) {
    return BlocBuilder(
      bloc: _loginBloc,
      builder: (BuildContext context, LoginState state) {
    if (state is LoginFail) {
        print ('Login fail');
    }
    return Column(
          ...
    )
Run Code Online (Sandbox Code Playgroud)

state handle flutter bloc

12
推荐指数
4
解决办法
5090
查看次数

Jenkins:允许本地结帐

这是我第一次使用詹金斯。我创建了一个只有一个文件的新文件夹,并在其中创建了一个 git 存储库。然后我使用该存储库设置 Jenkins。

我现在得到的是这个错误:

错误:Git 远程“path\hello”的签出已中止,因为它引用了本地目录,这可能不安全。无论如何,您可以通过将系统属性“hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT”设置为 true 来允许本地签出。完成:失败

我尝试使用以下命令启动詹金斯:

C:\Users\userName\.jdks\zulu11.56.19-ca-jdk11.0.15-win_x64\bin\java.exe -jar jenkins.war  hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true
Run Code Online (Sandbox Code Playgroud)

但这没有用。如何将“允许本地结帐”设置为 true?

automation jenkins

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

颤动:共享偏好

我有这个功能:

  Future<String> load(SharedPreferences prefs, String fileName) async {
    prefs = await SharedPreferences.getInstance();
    String jsonString = prefs.getString(fileName) ?? "";
    if (jsonString.isNotEmpty) {
      return jsonString;
    }else{
      return ...
    }
  }
Run Code Online (Sandbox Code Playgroud)

在其他情况下我应该返回什么?我试过""但它不起作用.

future sharedpreferences dart flutter

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

Flutter:集团,如何显示警报对话框

我是集团模式和流媒体方面的新手。我想在按下按钮时显示一个警报对话框,但找不到解决方法。实际上我的代码是:

Widget button() {
  return RaisedButton(
      child: Text('Show alert'),
      color: Colors.blue[700],
      textColor: Colors.white,
      onPressed: () {
        bloc.submit();
      });
   }



return Scaffold(
        appBar: AppBar(
          title: Text("Title"),
        ),
        body: StreamBuilder(
            stream: bloc.getAlert,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return Text("I have Dataaaaaa ${snapshot.data}");
              } else
                return ListView(
                  children: <Widget>[
                    Container(
                     button()
                    )
                ...
Run Code Online (Sandbox Code Playgroud)

而BLoC:

final _submissionController = StreamController();
Stream get submissionStream=> _submissionController.stream;
Sink get submissionSink=> _submissionController.sink;
Run Code Online (Sandbox Code Playgroud)

我试图做类似的事情:

Widget button() {
  return StreamBuilder(
stream: submissionStream
builder: (context, snapshot){
if (snapshot.hasData){
return showDialog(...) …
Run Code Online (Sandbox Code Playgroud)

alert view stream flutter

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

Flutter:如何模拟 Bloc

我想模拟我的集团以测试我的观点。

例如,这是我的 Bloc:

class SearchBloc extends Bloc<SearchEvent, SearchState> {
  @override
  // TODO: implement initialState
  SearchState get initialState => SearchStateUninitialized();

  @override
  Stream<SearchState> mapEventToState(SearchState currentState, SearchEvent event) async* {
    if (event is UserWrites) {
      yield (SearchStateInitialized.success(objects);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是观点:

class _SearchViewState extends State<SearchView> {
  final TextEditingController _filterController = new TextEditingController();

  @override
  void initState() {
    _filterController.addListener(() {
    widget._searchBloc.dispatch(FetchByName(_filterController.text));
     }
  }


 TextField buildAppBarTitle(BuildContext context) {
    return new TextField(
      key: Key("AppBarTextField"),
        controller: _filterController,
    );
  }

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: …
Run Code Online (Sandbox Code Playgroud)

testing mocking flutter bloc

9
推荐指数
1
解决办法
3763
查看次数

Flutter:如何测试滚动

我有一个以 ScrollController 作为控制器的 ListView.builder:

  _buildListView(state) => ListView.builder(
        itemBuilder: (_, int index) => _draw(index, state),
        itemCount: state.count
        controller: _scrollController,
      );
Run Code Online (Sandbox Code Playgroud)

我向控制器添加了一个侦听器:

  View() {
    _scrollController.addListener(_onScroll);
  }
Run Code Online (Sandbox Code Playgroud)

我想测试 _onScroll 函数:

 void _onScroll() {
    final maxScroll = _scrollController.position.maxScrollExtent;
    final currentScroll = _scrollController.position.pixels;
    if (maxScroll - currentScroll <= _scrollThreshold) {
      _bloc.dispatch(Fetch());
    }
  }
Run Code Online (Sandbox Code Playgroud)

但我不知道我如何测试它。这是我到目前为止尝试过的:

  testWidgets('Should test the scroll',
      (WidgetTester tester) async {
await tester.pumpWidget(generateApp());
    await tester.pump();
    await tester.drag(find.byType(ListView), const Offset(0.0, -300));
    await tester.pump();
...

)}
Run Code Online (Sandbox Code Playgroud)

但它根本不调用那个函数。

testing scroll flutter

7
推荐指数
4
解决办法
4827
查看次数