TextFieldやDropdownButtonの角を丸くしてみた。結局ConainerのBorderを丸くして角が丸くなったように見せるだけだった。
import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { String dropdownValue = 'One'; return Scaffold( backgroundColor: Colors.grey, appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ ClipRRect( borderRadius: BorderRadius.all(Radius.circular(30)), child: Container( width: 200, height: 100, color: Colors.yellow, child: Padding( padding: const EdgeInsets.all(8), child: const TextField( obscureText: true, decoration: InputDecoration( border: InputBorder.none, labelText: 'Pass', ), ), ), ), ), Gap(20), Container( padding: const EdgeInsets.symmetric(horizontal: 5), width: 200, decoration: BoxDecoration( border: Border.all(color: Colors.blue), borderRadius: BorderRadius.circular(20), ), child: const TextField( obscureText: true, decoration: InputDecoration( border: InputBorder.none, labelText: 'Pass', ), ), ), Gap(20), Container( padding: const EdgeInsets.symmetric(horizontal: 5), width: 200, decoration: BoxDecoration( border: Border.all(color: Colors.blue), borderRadius: BorderRadius.circular(20), ), child: DropdownButton<String>( value: dropdownValue, icon: const Icon(Icons.arrow_downward), iconSize: 24, elevation: 16, style: const TextStyle(color: Colors.deepPurple), onChanged: (String? newValue) {}, items: <String>['One', 'Two', 'Free', 'Four'] .map<DropdownMenuItem<String>>((String value) { return DropdownMenuItem<String>( value: value, child: Text(value), ); }).toList(), ), ), Gap(20), Text( 'You have pushed the button this many times:', style: TextStyle(color: Colors.white), ), Text( '$_counter', style: Theme.of(context).textTheme.headline4, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); } }