Pri*_*mal 1 listview dart flutter
我看到了这篇文章,我想ListWheelScrollView为我在大学的最终项目实施。但是,它不是按作者的代码工作的,我找不到确切的问题是什么。我怎样才能像下面这样动画?
我的代码与作者相同,但不起作用。
build()search_screen.dart 的功能
Widget build(BuildContext context) {
OrientationFixer.fixPortrait();
return FadeInScaffold(
body: Container(
width: double.infinity,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/cinema.jpg'),
fit: BoxFit.cover,
colorFilter: ColorFilter.mode(Colors.black.withOpacity(0.6), BlendMode.darken)
),
),
child: BlocBuilder<SearchEvent, SearchState>(
bloc: _searchBloc,
builder: (context, state) {
if(state.isKeyboardOn) {
_searchAnimationController.forward();
}
if(state.isKeyboardOff && _movieList.isEmpty) {
_searchAnimationController.reverse();
_searchBarController.clear();
}
if(state.isMovieAPICallSucceeded) {
_movieList = state.movieList;
}
if(state.isMovieCrawlSucceeded) {
_searchBloc.dispatch(SearchEventStateClear());
BlocNavigator.push(context,
MaterialPageRoute(builder: (_)=>MovieScreen(movie: state.clickedMovie)));
}
return AnimatedBuilder(
animation: _liftUpAnimation,
builder: (context, widget){
return Column(
children: [
SizedBox(height: _liftUpAnimation.value),
SearchMessage(
fadeOutAnimation: _fadeOutAnimation,
liftUpAnimation: _liftUpAnimation
),
SizedBox(height: 100.0),
Column(
children: [
SearchBar(
searchBarController: _searchBarController,
searchBloc: _searchBloc,
),
Container(
height: 3.0,
width: MediaQuery.of(context).size.width*0.9,
color: Colors.white,
)
],
),
SearchResultForm(
movieList: _movieList,
searchBloc: _searchBloc,
)
],
);
}
);
}
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
search_result_form.dart
class SearchResultForm extends StatefulWidget {
final List<MovieModel> movieList;
final SearchBloc searchBloc;
const SearchResultForm({
Key key,
@required this.movieList,
@required this.searchBloc
}) : super(key: key);
@override
_SearchResultFormState createState() => _SearchResultFormState();
}
class _SearchResultFormState extends State<SearchResultForm> {
final FixedExtentScrollController _controller = FixedExtentScrollController();
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocBuilder<SearchEvent,SearchState>(
bloc: widget.searchBloc,
builder: (context,state){
if(state.isKeyboardOn){
return SearchProcessingMessage(message: '??? ??????.');
}
if(state.isMovieAPICallLoading) {
return SearchProcessingMessage(message: '??? ?? ????...');
}
if(state.isMovieAPICallSucceeded && widget.movieList.isEmpty) {
return SearchProcessingMessage(message: '???? ??? ????.');
}
return Expanded(
child: ListWheelScrollView(
controller: _controller,
physics: FixedExtentScrollPhysics(),
itemExtent: 300.0,
children: widget.movieList.map((movie) => Column(
children: <Widget>[
SearchMovieForm(
movie: movie,
searchBloc: widget.searchBloc,
),
SizedBox(height: 30.0)
],
)).toList()
)
);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码对我有用。我创建了用于显示 ListWheelScoolView 的对话框。您可以根据使用情况修改此代码
List<String> nameList = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
void createScrollListDialog(BuildContext context) {
showCupertinoDialog(
context: context,
builder: (BuildContext ctx) {
return Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.only(top: 100, bottom: 100),
color: CupertinoColors.lightBackgroundGray,
child: ListWheelScrollView(
itemExtent: 40,
useMagnifier: true,
diameterRatio: 1.6,
children: <Widget>[
...nameList.map((String name) {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: CupertinoColors.white,
borderRadius: BorderRadius.circular(10),
border: Border.all(
width: 1, color: CupertinoColors.inactiveGray)),
padding: EdgeInsets.all(10),
child: Text(name),
);
})
]),
);
});}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5327 次 |
| 最近记录: |